/////////////////////////////////////employees.h
#ifndef __EMPLOYEES_H__
#define __EMPLOYEES_H__

/* 职工结构体定义 */
struct employee
{
    char no[20];    // 职工号
    char name[50];  // 姓名
    char depno[20]; // 部门号
    double salary;  // 工资
};

/* 职工表结构体（不透明类型） */
struct employees;

/* 创建职工表
 * 返回值：创建成功的职工表指针，失败返回NULL */
struct employees *employees_create();

/* 销毁职工表
 * @param es 要销毁的职工表指针 */
void employees_destroy(struct employees *es);

/* 从文件读取数据到职工表
 * @param es 职工表指针
 * @param filename 文件名
 * @return 0成功，1失败 */
int employees_read_from_file(struct employees *es, const char *filename);

/* 将职工表数据保存到文件
 * @param es 职工表指针
 * @param filename 文件名
 * @return 0成功，1失败 */
int employees_save_to_file(struct employees *es, const char *filename);

/* 添加职工记录
 * @param es 职工表指针
 * @param e 要添加的职工记录 */
void employees_add(struct employees *es, struct employee e);

/* 打印所有职工记录
 * @param es 职工表指针 */
void employees_print(struct employees *es);

/* 按职工号排序
 * @param es 职工表指针 */
void employees_sort_by_no(struct employees *es);

/* 按部门号排序
 * @param es 职工表指针 */
void employees_sort_by_depno(struct employees *es);

/* 按工资排序
 * @param es 职工表指针 */
void employees_sort_by_salary(struct employees *es);

/* 删除指定职工号的记录
 * @param es 职工表指针
 * @param no 要删除的职工号 */
void employees_remove_by_no(struct employees *es, const char *no);

/* 删除所有记录
 * @param es 职工表指针 */
void employees_remove_all(struct employees *es);

#endif /* __EMPLOYEES_H__ */